package com.xxx.text;

import java.sql.*;

/**
 * JDBC工具类
 */
public class BaseDao {
    /*
      文件的读取，只需读取一次即可拿到这些值，使用静态代码块
     */
    //    static {
//        //读取资源文件,获取值
//        try {
//            //1.创建Properties集合类
//            Properties pro=new Properties();
//            //获取src路径下的文件方式--->ClassLoader
//            ClassLoader classLoader=BaseDao.class.getClassLoader();
//            URL res=classLoader.getResource("jdbc.properties");
//            assert res != null;
//            String path= res.getPath();
//            // System.out.println(path);
//            //2.加载文件
//            pro.load(new FileReader(path));
//            url=pro.getProperty("url");
//            user=pro.getProperty("user");
//            password=pro.getProperty("password");
//            String driver = pro.getProperty("driver");
//            //注册驱动
//            Class.forName(driver);
//        } catch (IOException | ClassNotFoundException e) {
//            e.printStackTrace();
//        }
//    }
    /**
     * 获取连接
     * @return 连接对象
     */
    public Connection getConnection() throws SQLException, ClassNotFoundException {
        Class.forName("com.mysql.jdbc.Driver");
        return DriverManager.getConnection("jdbc:mysql://localhost:3306/studentgrade","root","123");
    }

    /**
     * 释放资源
     * @param rs 结果集
     * @param stmt 执行sql的对象
     * @param conn 连接对象
     */
    public static void close(ResultSet rs,Statement stmt, Connection conn){
        if(rs!=null)
        {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(stmt!=null)
        {
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(conn!=null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    public static void close(Statement stmt, Connection conn){
        close(null,stmt,conn);
    }
    public int update(String sql,Object...args) throws  Exception{
        PreparedStatement pstmt;
        Connection conn;
        int count=0;
        conn=getConnection();
        pstmt=conn.prepareStatement(sql);
        if(args.length>0)
        {
            for (int i=0;i<args.length;i++)
            {
                pstmt.setObject(i+1,args[i]);
            }
        }
        count=pstmt.executeUpdate();
        return count;
    }
}
